package com.secsys.service;

import java.util.Date;
import java.util.List;

import com.secsys.dto.StoStockDTO;
import com.secsys.model.TbStoStock;

public interface StoStockService extends Service<TbStoStock, Integer> {
	
	public void update(TbStoStock tbStoStock);
	
	/**
	 * 根据股票代码查找TbStoStock（股票基本信息）对象
	 * @param stockCode
	 * 				-股票代码，比如6000000(浦发银行)
	 * @return TbStoStock
	 * 				-TbStoStock（股票基本信息）对象
	 */
	public StoStockDTO findByStockCode(String stockCode);
	
	/**
	 * 根据“股票名称”模糊查找TbStoStock（股票基本信息）的List数组对象
	 * @param stockName
	 * 				-股票名称，比如股票代码为“600029”的“南方航空”
	 * @param	offset
	 * 				-偏离量
	 * @param	count
	 * 				-个数
	 * @return List<TbStoStock>
	 * 				-TbStoStock（股票基本信息）的List数组对象
	 */
	public List<StoStockDTO> findByStockName(String stockName,int offset,int count);
	
	/**
	 * 根据“行业类别”查找TbStoStock（股票基本信息）的List数组对象
	 * @param stockBoard
	 * 				-行业类别，比如“银行业”、“港口业”、“航空运输业”
	 * @param	offset
	 * 				-偏离量
	 * @param	count
	 * 				-个数
	 * @return List<TbStoStock>
	 * 				-TbStoStock（股票基本信息）的List数组对象
	 */
	public List<StoStockDTO> findByStockBoard(String stockBoard,int offset,int count); 
	
	/**
	 * 根据“证券类别”查找TbStoStock（股票基本信息）对象
	 * @param stockType
	 * 				-证券类别，比如“上海A股”，“深证A股”
	 * @param	offset
	 * 				-偏离量
	 * @param	count
	 * 				-个数
	 * @return TbStoStock
	 * 				-TbStoStock（股票基本信息）对象
	 */
	public List<StoStockDTO> findByStockType(String stockType,int offset,int count); 
	
	/**
	 * 根据“上市日期”查找TbStoStock（股票基本信息）的List数组对象
	 * @param listingDate
	 * 				-上市日期，比如2011-1-1
	 * @param	offset
	 * 				-偏离量
	 * @param	count
	 * 				-个数
	 * @return List<TbStoStock> 
	 * 				-TbStoStock（股票基本信息）的List数组对象
	 */
	public List<StoStockDTO> findByListDate(Date listingDate,int offset,int count);
	
	/**
	 * 根据“上市日期”的一个日期范围查找TbStoStock（股票基本信息）的List数组对象
	 * @param startDate
	 * 				-上市日期，日期范围的开始日期，比如2008-1-1
	 * @param endDate
	 * 				-上市日期，日期范围的结束日期，比如2009-1-1
	 * @param	offset
	 * 				-偏离量
	 * @param	count
	 * 				-个数
	 * @return List<TbStoStock> 
	 * 				-TbStoStock（股票基本信息）的List数组对象
	 */
	public List<StoStockDTO> findByListDateRange(Date startDate,Date endDate,int offset,int count);
	
	
	
	/**
	 * 根据“经营范围”模糊查找TbStoStock（股票基本信息）的List数组对象
	 * @param manageArea
	 * 				-经营范围，比如股票代码为“600050”的"中国联通"属于“电信业”
	 * @param	offset
	 * 				-偏离量
	 * @param	count
	 * 				-个数
	 * @return List<TbStoStock>
	 * 				-TbStoStock（股票基本信息）的List数组对象
	 */
	public List<StoStockDTO> findByManageArea(String manageArea,int offset,int count);
	
	/**
	 * 根据“主营业务”模糊查找TbStoStock（股票基本信息）的List数组对象
	 * @param mainOperation
	 * 				-主营业务，比如股票代码为“600050”的"中国联通"属于“电信业的投资”
	 * @param	offset
	 * 				-偏离量
	 * @param	count
	 * 				-个数
	 * @return List<TbStoStock>
	 * 				-StoStockDTO（股票基本信息）的List数组对象
	 */
	public List<StoStockDTO> findByMainOperation(String mainOperation,int offset,int count);
	
	/**
	 * 根据“中文的公司名称”模糊查找StoStockDTO（股票基本信息）的List数组对象
	 * @param companyNameZh
	 * 				-中文的公司名称，比如股票代码为“600028”的“中国石油化工股份有限公司”
	 * @param	offset
	 * 				-偏离量
	 * @param	count
	 * 				-个数
	 * @return List<StoStockDTO>
	 * 				-StoStockDTO（股票基本信息）的List数组对象
	 */
	public List<StoStockDTO> findByCompanyNameZh(String companyNameZh,int offset,int count);
	
	/**
	 * 根据“英文的公司名称”模糊查找StoStockDTO（股票基本信息）的List数组对象
	 * @param companyNameEn
	 * 				-中文的公司名称，比如股票代码为“600028”的“中国石油化工股份有限公司”
	 * @param	offset
	 * 				-偏离量
	 * @param	count
	 * 				-个数
	 * @return List<StoStockDTO>
	 * 				-StoStockDTO（股票基本信息）的List数组对象
	 */
	public List<StoStockDTO> findByCompanyNameEn(String companyNameEn,int offset,int count);
	
	/**
	 * 批量地将数据库持久化对象POJO的tbStoStock转换成领域模型的数据传输对象DTO的StoStockDTO
	 * @param tbStoStockList
	 * 			数据库持久化对象POJO的List数组
	 * @return List<StoStockDTO>
	 * 		领域模型的数据传输对象DTO的StoStockDTO的List数组
	 */
	public List<StoStockDTO> foreachGetDtoFromPojo(List<TbStoStock> tbStoStockList);
	
	/**
	 * 将数据库持久化对象POJO的tbStoStock转换成领域模型的数据传输对象DTO的StoStockDTO
	 * @param tbStoStock
	 * 			数据库持久化对象POJO
	 * @return StoStockDTO
	 * 		领域模型的数据传输对象DTO的StoStockDTO
	 */
	public StoStockDTO getDtoFromPojo(TbStoStock tbStoStock);
	
}
